Skip to content

XEP-0469: Bookmark pinning - #4088

Open
jcbrand wants to merge 4 commits into
masterfrom
bookmark-pinning
Open

XEP-0469: Bookmark pinning#4088
jcbrand wants to merge 4 commits into
masterfrom
bookmark-pinning

Conversation

@jcbrand

@jcbrand jcbrand commented Jun 18, 2026

Copy link
Copy Markdown
Member

Continuation of #3949

@mercihabam mercihabam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @jcbrand for fine-tuning this further. I can't wait to see it in the next release.

@jcbrand
jcbrand force-pushed the bookmark-pinning branch 2 times, most recently from 9bf3191 to e90eeb0 Compare June 21, 2026 20:30
mercihabam and others added 4 commits June 21, 2026 22:30
…ned state

Review fixes on top of the XEP-0469 pinning implementation:

- Establish the bookmark<->MUC link whenever either side appears: on
  bookmark-add, on chatbox-add, and via a one-off sweep after bookmarks
  are fetched.
- Derive `pinned` from the bookmark's `<pinned/>` extension (single
  source of truth) instead of storing a separate cached boolean.
- Simplify pinBookmark/unpinBookmark to only mutate extensions and
  return the promise; drop the unreachable try/catch rollback around the
  async api.bookmarks.set call.
- Make `setBookmark` idempotent and clear the link when a bookmark is removed.
- Move `ModelWithBookmark` onto MUC only.
- Remove the now-vestigial setBookmarkState mixin.
- Restrict the pinned list to open group chats (type + !closed) and drop
  dead modal imports from the shared room-item template.
Follow-up polish on the pinning code:

Pin/unpin now compute the desired extensions declaratively and always
(re)publish. This is idempotent and self-healing when local and server
state have diverged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants